package fr.babos.graphic.components.base 
{
	import flash.display.BitmapData;
	import fr.babos.core.masters.MasterSprite;
	
	/**
	 * Composant de base.
	 * Peut être skinné et avoir plusieurs états
	 * @author ZoulouX
	 */
	public class BaseComponent extends BaseElement
	{
		/**
		 * BitmapData d'un pixel transparent (pour faire des zones transparentes avec juste un bitmap)
		 */
		protected static const __transparentBitmapData	:BitmapData 		= new BitmapData(1, 1, true, 0x00000000);
		
		/**
		 * BitmapData d'un pixel rouge (pour faire des bitmaps contenant une couleur traitable, exemple pour les masques)
		 */
		protected static const __opaqueBitmapData		:BitmapData 		= new BitmapData(1, 1, false, 0xFF0000);
		
		/**
		 * BitmapData d'un pixel blanc (pour faire des bitmaps contenant une couleur de fond par exemple)
		 */
		protected static const __whiteBitmapData		:BitmapData 		= new BitmapData(1, 1, false, 0xFFFFFF);
		
		/**
		 * BitmapData d'un pixel noir (pour faire des bitmaps contenant une couleur de fond par exemple)
		 */
		protected static const __blackBitmapData		:BitmapData 		= new BitmapData(1, 1, false, 0x000000);
		
		
		/**
		 * Le skin associé a cette élément
		 */
		// Le ComponentSkin est un objet qui permet de placer des éléments visuel qui viennent de la classe d'un skin
		// Par exemple on est sur une concrête qui contient un sprite nommé $back
		// La classe du skin contient aussi une concrête nommée $back qui sera patchée au composant.
		// Le componentSkin peut être configurer pour transformer le type des concrêtes.
		// Par exemple un Sprite doit pouvoir devenir un ResizableComponent
		// Le ComponentSkin peut être aussi configurer pour attribuer des concrêtes sur des publiques $name.
		// (sans passer par un skin qui viendrait d'un SWC)
		//protected var _skin:ComponentSkin;
		
		/**
		 * Le state de cet élément
		 */
		// Dans l'idée un state manager peut gérer des éléments du skin (des clips avec des $name)
		// Et contien les états (des variables) de chacun de ces éléments (top, left, alpha, visible, enable, etc)
		// Ce stageManager contient aussi un transitionManager qui permet d'effectuer des transitions lors
		// de changement de stage (transition automatique selon le type de la propriété, tout paramétrable)
		//protected var _states:StatesManager
		
		/**
		 * Constructeur du composant de base
		 */
		public function BaseComponent ()
		{
			
		}
	}
}